Description
When the weather payload has active alerts[] or AQI > 100, show a persistent single-line banner at the top of the Personal page (above the first row of panels).
Banner format: ⚠ Freeze Warning · until 9:00 AM · AQI 142 Unhealthy
Behavior:
- Only shown when at least one condition is active
- Styled bold red (alert) or dark orange (AQI only)
- Dismissible with
xuntil the next data refresh re-evaluates - Survives panel refreshes — only clears when the underlying alert is gone
- Multiple alerts: show the first + "and N more"
Implementation:
- Add a
Staticwidget above theContentSwitcher, initiallydisplay: none - In
refresh_data(), check weather payload for alerts and AQI; show/hide and update the widget accordingly - Track dismissed state in a set of alert event names; compare against current alerts on refresh
Acceptance Criteria
- #1 Banner appears when alerts[] is non-empty or AQI > 100
- #2 Banner is hidden when no alert conditions are active
- #3 x dismisses the banner until next data refresh
- #4 Multiple alerts show count
- #5 Banner does not appear on News or System pages